目前我們已經將兩台 Web 伺服器放在兩個不同的可用區,並在 Web 伺服器前放置一個應用負載均衡器 ALB,接著我們把後端的資料庫架設起來,如圖一所示,今天要介绍的是 Amazon 的關聯式資料庫Amazon Relational Database Service 簡稱 Amazon RDS 。可以注意到 S3 是屬於全域的,並沒有包含在 VPC 中,而 Amazon Elastic Block Store (EBS) 則是與 EC2 實例連接在一起,雖然它們都是從 EBS 這個服務中切割出來的。
圖一、具有 RDS 的應用程式架構
只要撰寫應用程式,就免不了會有資料儲存的需求,所以一定會需要利用資料庫來存取資料,而建置資料庫的方法可以是安裝在自己的伺服器上或是安裝在雲端的 EC2 實例上,可以從圖二看出這兩者之間的差別,管理者要由實體的電源、網路線、機架、伺服器主機,軟體的作業系統安裝、安全更新、資料庫安裝、安全更新、備份等等工作都要負責,雖然將資料庫放在 EC2 實例中就可以不用擔心實體的維護,但仍然需要管理軟體的維護,導致資料庫工作人員沒辦法專心在本業上,所以 AWS 推出 RDS 讓資料庫管理人員可以更專心在本業上。
圖二、傳統資料庫管理與 RDS 全面託管的差別
圖三描述了 RDS 資料庫的組成,當使用者在設定 RDS 時要注意 RDS 的硬體配置如 CPU 、記憶體以及硬碟型態跟存取速度,可以發現其實跟 EC2 的設定很像,只是 RDS 只安裝了資料庫,所以需要選擇適合的資料庫。
圖三、 RDS 資料庫
接下來我們要安裝 RDS ,要事先考慮好安裝環境需求,可參考圖一:
記得先前的網路設定,依照先前的設定來設定 DB Subnet Group
因為RDS也需要有安全群來確保它的安全,先前有提過安全組是有狀態的,簡單來說我們可以將安全組的來源,設定為另一個安全組,就如上面第三點的說明,設定 RDS 的安全組只允許來源是來自 WEB 服務器的連線。
進入 AWS 管理控制台,登入後按下服務選單,選擇 VPC 服務,進入 VPC 主控台,按下左邊導覽頁的Security Groups後, 再按下右手邊的 Create security group,接下來設定組態內容
圖四、 Security Group 安全組組態畫面
Security group name : RDS Security Group
Description : DB Security Group
VPC : vpc-0bb7004b67556d0da
Inbound rules
Type : MYSQL/Aurora
Source : sg-08d4a4fdb2bb24bac (ithome_web_SG)
首先進入 AWS 管理控制台,登入後按下服務選單,選擇 RDS 服務,進入 RDS 主控台,注意 1. 是否是在新加坡地區(必須要跟先前規劃的 VPC 所在區域相同), 2. 按下左邊導覽頁的Subnet groups後, 3. 再按下右手邊的 Create DB Subnet Group,接下來設定組態內容
圖五、 DB Subnet Group 組態畫面
記得先前的網路設定,依照先前的設定來設定 DB Subnet Group
Name : ithomeDBsubnetGroup
Description : ithome demo RDS subnetGroup
VPC : vpc-0bb7004b67556d0da | ithomeVPC
Add subnets
Availability Zones
ap-southeast-1a
ap-southeast-1b
Subnets
subnet-0b047b309432d952c (172.16.2.0/24)
subnet-0c60019adc4bec5f6 (172.16.1.0/24)
按下左邊導覽頁的Databases後, 再按下右手邊的 Create database,接下來設定組態內容,設定非常多,底下寫的原則是是要修改的,請務必要注意填寫
圖六、 RDS database 組態畫面
Choose a database creation method : _Standard Create _
Engine options : MySQL
Version : MySQL 8.0.17
Templates : Production
Settings
DB instance identifier: ithomeDBId #注意這個不是資料庫名稱,只是資料庫實體識別,跟主機名稱類似
Master username: ithomeDbuser #資料庫管理員名稱
Master password: ithome-password
Confirm password: ithome-password
DB instance size
Burstable classes (includes t classes)
db.t2.micro
Storage
Storage type: General Purpose (SSD)
Allocated storage: 100
Availability & durability
Multi-AZ deployment : Create a standby instance (recommended for production usage) #這就是會建立 Slave DB的選項
Connectivity
Virtual private cloud (VPC) : vpc-0bb7004b67556d0da | ithomeVPC
按下 Additional connectivity configuration
Subnet group : ithomeDBsubnetGroup
Existing VPC security groups : RDS Security Group
展開 Additional configuration
Initial database name: ithomeDB
Enable automatic backups : 預設有選 #這就是備份到S3的設定,如果打開,每七天會自動備份一次
圖七、 RDS 自動備份組態畫面
建立資料庫需要幾分鐘時間,先回到 RDS主控台,選擇左邊選單中的 Databases ,按下剛剛新增的資料庫實例 ithomedbid ,查看內容,在 Connectivity & security 頁籤中,找到 Endpoint 這個欄位 ithomedbid.clbfxibs3qbv.ap-southeast-1.rds.amazonaws.com ,這個欄位等同於資料庫連線時的主機位址
圖八、 確認 RDS 組態